From: Florian Müllner Date: Fri, 26 Jun 2020 00:56:35 +0000 (+0200) Subject: workspace: Account for window picker padding X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~684^2^2~164 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=124eb1ca187928b07cc333c0134491a1edd05a77;p=gnome-shell.git workspace: Account for window picker padding Workspaces are supposed to request the work area as their preferred size, however the widget will adjust the sizes returned by the layout manager to account for borders and padding. https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1345 --- diff --git a/js/ui/workspace.js b/js/ui/workspace.js index 14670d100..f4189ec4d 100644 --- a/js/ui/workspace.js +++ b/js/ui/workspace.js @@ -520,26 +520,40 @@ var WorkspaceLayout = GObject.registerClass({ return this._layout.strategy.computeWindowSlots(this._layout, availArea); } + _getAdjustedWorkarea(container) { + const workarea = this._workarea.copy(); + + if (container instanceof St.Widget) { + const themeNode = container.get_theme_node(); + workarea.width -= themeNode.get_horizontal_padding(); + workarea.height -= themeNode.get_vertical_padding(); + } + + return workarea; + } + vfunc_set_container(container) { this._container = container; this._stateAdjustment.actor = container; } vfunc_get_preferred_width(container, forHeight) { + const workarea = this._getAdjustedWorkarea(container); if (forHeight === -1) - return [0, this._workarea.width]; + return [0, workarea.width]; - const workAreaAspectRatio = this._workarea.width / this._workarea.height; + const workAreaAspectRatio = workarea.width / workarea.height; const widthPreservingAspectRatio = forHeight * workAreaAspectRatio; return [0, widthPreservingAspectRatio]; } vfunc_get_preferred_height(container, forWidth) { + const workarea = this._getAdjustedWorkarea(container); if (forWidth === -1) - return [0, this._workarea.height]; + return [0, workarea.height]; - const workAreaAspectRatio = this._workarea.width / this._workarea.height; + const workAreaAspectRatio = workarea.width / workarea.height; const heightPreservingAspectRatio = forWidth / workAreaAspectRatio; return [0, heightPreservingAspectRatio];